﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Epsilon.Expr
{
    public class ListExpr : Expression
    {
        public List<Expression> Elements { get; private set; }

        public ListExpr(List<Expression> elements, int l, int c)
            : base(l, c)
        {
            Elements = elements;
        }
    }

    public class ListTailExpr : Expression
    {
        public List<Expression> Elements { get; private set; }
        public Expression Tail { get; private set; }

        public ListTailExpr(List<Expression> elements, Expression tail, int l, int c)
            : base(l, c)
        {
            Elements = elements;
            Tail = tail;
        }
    }

    public class NilExpr : Expression
    {
        public Type Type { get; private set; }

        public NilExpr(Type type, int l, int c)
            : base(l, c)
        {
            Type = type;
        }
    }
}
